package br.com.faculdade.domain.service;

import br.com.faculdade.infrastructure.dao.UsuarioDAO;
import br.com.faculdade.infrastructure.entity.Usuario;
import java.io.Serializable;
import java.util.List;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.TransactionPropagationType;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.log.Log;

/**
 *
 * @author Kirmaier
 */
@AutoCreate
@Name("usuarioService")
@Transactional(TransactionPropagationType.SUPPORTS)
public class UsuarioService implements Serializable {

    @Logger
    private Log log;
    @In
    private UsuarioDAO usuarioDAO;

    public void alterar(Usuario usuario) {
        log.info("Invocando DAO para alterar usuario");

        usuarioDAO.alterar(usuario);
    }

    public void cancelar() {
        log.info("Invocando DAO para cancelar operação");

        usuarioDAO.cancelar();
    }

    public Usuario criar() {
        log.info("Criar novo objeto");

        return new Usuario();
    }

    public void excluir(Usuario usuario) {
        log.info("Invocando DAO para excluir usuario");

        usuarioDAO.excluir(usuario);
    }

    public Usuario obterPorId(Integer idusuario) {
        log.info("Invocando DAO para obter usuario por ID");

        return usuarioDAO.obterPorId(idusuario);
    }

    public List<Usuario> obterPorParametros(String paramNome, String paramCPF) {
        log.info("Invocando DAO para pesquisar com parametros");

        return usuarioDAO.obterPorParametros(paramNome, paramCPF);
    }

    public Usuario obterUsuario(String password, String username) {
        return usuarioDAO.obterUsuario(password, username);
    }

    public void salvar(Usuario usuario) {
        log.info("Invocando DAO para persistir usuario");

        usuarioDAO.salvar(usuario);
    }
}
